package com.settlement.system.model.entity.common;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.converter.DateFormatConvert;
import com.settlement.system.converter.DateTimeFormatConvert;
import com.settlement.system.converter.wp.ClassifyConvert;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;
import java.util.Date;

/**
 * WP-核查结果明细
 * @author xiaochuan
 * @since 2022-07-26
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9,fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblWpCheckOutDtl extends BaseModel implements Serializable {


    /**
     * 分类(1来货差异, 2退供差异)
     */
    @ColumnWidth(12)
    @ExcelProperty(value = "分类",converter = ClassifyConvert.class)
    @ApiModelProperty(value = "分类")
    @NotBlank(message="分类输入有误")
    private String classify;

    /**
     * 差异类型
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "差异类型")
    @ApiModelProperty(value = "差异类型")
    @NotBlank(message="差异类型不能为空")
    private String diffType;

    /**
     * PO单号
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "PO单号")
    @ApiModelProperty(value = "PO单号")
    @NotBlank(message="PO单号不能为空")
    private String poNo;

    /**
     * 商品条码
     */
    @ColumnWidth(18)
    @ExcelProperty(value = "商品条码")
    @ApiModelProperty(value = "商品条码")
    @NotBlank(message="商品条码不能为空")
    private String barCode;

    /**
     * 单号。(分类=来货差异时，对应送货单号；分类=退供差异时，对应退供单号；)
     */
    @ColumnWidth(22)
    @ExcelProperty(value = "送货单号/退供单号")
    @ApiModelProperty(value = "单号")
    private String billNo;

    /**
     * 差异日期
     */
    @ColumnWidth(18)
    @ExcelProperty(value = "差异日期",converter = DateFormatConvert.class)
    @ApiModelProperty(value = "差异日期")
    @NotNull(message="差异日期为空或格式不对")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date diffDate;

    /**
     * 跟进部门。(1、已确认待唯品结算;2、未确认待唯品核查;3、待物流处理;4、待门店处理;5、待地区仓处理;6、待客服处理;7、待技术处理;8、待财务调账处理;9、有争议;10、无需跟进)
     */
    @ColumnWidth(18)
    @ExcelProperty(value = "跟进部门")
    @ApiModelProperty(value = "跟进部门")
    @NotBlank(message="跟进部门不能为空")
    private String followUpDept;

    /**
     * 核查结果。(1,POSKU差异为0;2,不赔付;3,待核查;4,待走流程结算;5,待做虚拟单入库;6,可赔付;7,唯品会未收到商品;8,唯品已退回待仓库验收;9,唯品运配索赔;10,唯品运配责任;11,唯品责任;12,未发出未验收;13,已发出未收到退货;14,已结算;15,已结算丢件;16,已拒收;17,已揽收;18,已收到，质检到无头件待处理;19,已验收+索赔=计划量;20,已验收+索赔量＜计划量;21,已验收+索赔量>计划量;22,已质检;23,已做虚拟单入库;24,疫情未开仓;25,优惠差异;26,有争议;27,整单验收无差异;28,自认损失;)
     */
    @ColumnWidth(22)
    @ExcelProperty(value = "核查结果")
    @ApiModelProperty(value = "核查结果")
    @NotBlank(message="核查结果不能为空")
    private String checkResult;

    /**
     * 百丽核查结果说明。(当[跟进部门]为“9、有争议”时，核查结果说明限制为必填；)
     */
    @ColumnWidth(24)
    @ExcelProperty(value = "百丽核查结果说明")
    @ApiModelProperty(value = "百丽核查结果说明")
    private String blCheckDescript;

    /**
     * 唯品核查结果说明。(当[跟进部门]为“9、有争议”时，核查结果说明限制为必填；)
     */
    @ColumnWidth(24)
    @ExcelProperty(value = "唯品核查结果说明")
    @ApiModelProperty(value = "唯品核查结果说明")
    private String wpCheckDescript;

    /**
     * 责任方。(核查结果为“自认损失”时必填。1,O2O门店;2,仓库;3,质检部;4,品牌运营;5,系统/技术;6,平台;7,无损失;)
     */
    @ColumnWidth(18)
    @ExcelProperty(value = "责任方")
    @ApiModelProperty(value = "责任方")
    private String responsibleParty;

    /**
     * 损失原因。(核查结果为“自认损失”必填。1,门店漏发;2,仓库漏发;3,超时未质检;4,质检错误;5,商品描述错误;6,商品质量问题;7,系统问题;8,平台规则特殊处理;9,实物追回;10,货款追回;)
     */
    @ColumnWidth(18)
    @ExcelProperty(value = "损失原因")
    @ApiModelProperty(value = "损失原因")
    private String lossReason;


    /**
     * 操作时间
     */
    @ColumnWidth(22)
    @ExcelProperty(value = "创建时间",converter = DateTimeFormatConvert.class)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date createTime;

    /**
     * 操作人
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "核查人")
    public String createUser;

    @Override
    public String toString() {
        return "TblWpCheckOutDtl{" +
                "classify='" + classify + '\'' +
                ", poNo='" + poNo + '\'' +
                ", barCode='" + barCode + '\'' +
                ", billNo='" + billNo + '\'' +
                '}';
    }
}
